A computer system provides a collection of hardware resources such as processors, storage units, network interfaces, etc for the performance of computational tasks. These resources may be provided by a single machine or may be distributed across multiple machines. Many computer systems include multiple instances of a given resource. For example, a system may incorporate multiple processing nodes to provide redundancy in case one of the processing nodes fails, in that the other processing nodes remain available to carry out computational tasks.
In some computer systems, the allocation of computational tasks to the available resources in the system, sometimes referred to as service provisioning, is controlled by a resource manager. For example, if an application requires a particular amount of processing power and a particular amount of storage, the resource manager can allocate hardware resources to the application to provide the desired capabilities.
In many installations, the hardware resources belong to or are managed by a service provider, who runs (hosts) applications on behalf of one or more third parties (i.e. customers). The service provider has to match the available resources against the needs of the various applications. In some cases the resources allocated to a particular customer may be fixed, in which case the resource manager just has to balance the allocated resources against the applications for that one customer. In other cases, the resource manager may have to balance the available resources across multiple customers.
One factor that complicates service provisioning for the resource manager is that the available resources may vary with time. For example, a particular hardware resource may fail due to some internal problem, and hence become unavailable. Even if the hardware resource continues to operate properly, there are various reasons why the resource could still become unavailable, such as a network failure that prevents contact with the resource, or some other disruption to a machine that incorporates the hardware resource. For example, the machine may need a service operation in order to repair, replace or upgrade some other component within the machine (hardware or software), and this may then render any hardware resource within the machine unavailable while the service operation is in progress. Similarly, an upgrade to the operating system of the machine may be followed by a system reboot, during which time the hardware resources of the system may be unavailable. One or more hardware resources might also be taken off-line to facilitate testing or servicing of the electrical power circuits, air conditioning facilities and so on for a machine.
Not only are the available resources subject to change with time, but so are the application or workload requirements. For example, if an application relates to online ticket booking, there may be a sudden rise in activity when tickets for a new event are made available. There may also be a rise in activity following television advertisements for the event. In these circumstances, the change in application workload may be somewhat predictable (e.g. based on the known scheduling of television advertisements), in which case the resource manager can perform some advance planning of its service provisioning. In other cases however, the change in activity levels for an application may not be predictable or expected.
The resource manager therefore has the task of matching the available resources against the requirements of various applications on a dynamic basis. This typically involves transferring resources from those applications that are currently under-utilizing their allocated resources (or are relatively insensitive to increased processing delays) to those applications that now require additional resources.
The resource manager may also be constrained by contractual terms between the service provider and the customer. For example, the service provider may guarantee that certain applications will always receive some set minimal level of resources. These restrictions might be dynamic in nature—e.g. a contract between a service provider and a customer might specify that if application activity exceeds a certain threshold, then the service provider will make additional resources available to the application within a specified time limit (say 15 minutes). Another possibility is to include financial incentives in the contract for the service provider to ensure that a particular application is always allocated a given level of resources. This incentive may be in the form of monetary penalties if the resource manager is unable to provide the application with the desired level of resources for a certain time period.
Overall therefore it can be seen that the resource manager has a difficult task in performing a dynamic allocation of the available resources to the requesting applications. Any improvement in how this allocation is performed may lead to improved efficiency in the use of the hardware resources, in particular providing better application performance for a given set of hardware resources.